package kotlin01
//
//
//fun main() {
//    // 实例化
////    var dog = Dog()
////    dog.name = "旺财"
////    dog.friend = "小花"
////    dog.eat("骨头")
////    dog.bark()
////    println(dog.name + dog.friend)
////
////    // 实例化cat
////    var cat = Cat("三花猫", "罗非鱼", 99)
////    cat.eat()
////    cat.
//
//    // 如果有次构造函数，可以通过多种不同的形式进行实例化
//    val p = Person("小王")
//    val p2 = Person("小王", 18)
//    val p3 = Person("小王", 18, "中国")
//}
//
//class Dog {
//    var name: String = ""
//    var friend: String = ""
//    fun eat(food: String) {
//        println(food + "好好吃")
//    }
//
//    fun bark() {
//        println("旺旺~~")
//    }
//}
//
//// constructor 后面写了属性，类的内部可以省略不写
//class Cat constructor(var name: String, var food: String, var age: Int) {
//
//
//
//    // 实例化时自动执行，可以写一些逻辑，可以省略不写
//    init {
//        println("init执行啦~~~")
//        println(name + "+++" + food)
//        // 可以对参数进行校验
//        // require(布尔值){ false时的错误信息 }
////        require(name.isNotEmpty()) { "出错啦" }
//        require(name === "哈士奇") { "出错啦" }
//        require(age < 20) { "猫猫一般活不了这么久，你买的这只可能有点问题" }
//    }
//
//    fun eat() {
////        this.name
//        // this可以省略
//        println(name + "吃" + food)
//    }
//}
////
////class Person constructor(var name: String) {
////    var age: Int = 0
////    var country: String = ""
////
////    constructor(name: String, age: Int) : this(name) {
////        this.age = age
////    }
////
////    constructor(name: String, age: Int, country: String) : this(name, age) {
////        this.country = country
////    }
////}